Sensor data, such as images, videos, microphone audio signals, environmental sensor data such as from temperature sensors, velocity sensors, light sensors, depth sensors, and other sensor data is often filtered before being used in control systems and other downstream processes. The filtering process may be used for many purposes such as: to remove noise, to refine the sensor data by removing outliers or filling in missing values, or to identify features in the signal such as edges.
Some existing signal filtering approaches are convolution-based. These approaches involve computing updated values of the signal on the basis of a kernel of values which are placed over parts of the signal. For example, in the case of a two dimensional image, the kernel may be a two dimensional array which is smaller than the image. The value of an image pixel which falls under the center of the kernel may be replaced by an aggregate of the pixel values falling under the whole kernel, weighted by associated values stored in the kernel. The kernel is moved over the image to compute new values of the image pixels in a process known as convolution. The kernel of values may be referred to as a filter.
Existing convolution-based filtering approaches have limited accuracy because they depend on the choice of filter used. In addition, existing filtering approaches that are competitive in terms of accuracy (i.e. not basic convolution such as with Gaussian filters) are time consuming to compute, especially for complex tasks such as image denoising. Reduction of computation time (whilst maintaining high accuracy) is particularly significant as the accurate filtered output is typically used for real time control of a downstream system, such as a robotic system, a computing device, a mechanical system such as a motor, or other equipment.
Other types of sensor data filtering systems are known such as those using Kalman filters or Least Mean Squares (LMS) filters. In the case of image filtering, many complex image specific filters are known. These systems are complex and there is a desire to improve accuracy and/or reduce the amount of computational resources used by these types of filters.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of sensor data filtering and/or control systems.